---
title: Installing PredictionIO with Vagrant (VirtualBox)
---

<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

WARNING: Running PredictionIO with Vagrant is intended for the purposes of
simple tests in an isolated environment. Due to resource limitation and overhead
of virtual machine (VM), it runs much more slowly or may encounter memory issue.
We recommend using Linux or Mac machine for serious usage.

## Install VirtualBox

If you don't have VirtualBox installed, please follow the instructions in the
[VirtualBox site](https://www.virtualbox.org/wiki/Downloads) to download and
install it. After installation is done, you don't need to setup anything in Virtual Box. Vagrant will do it for you later.

## Install Vagrant

If you don't have Vagrant installed, please follow the instructions in the the
[Vagrant site](https://www.vagrantup.com/downloads.html) to download and install
it.

## Bring up PredictoinIO VM with Vagrant

Get the latest vagrant setup from github and make sure in master branch:

```
$ git clone https://github.com/PredictionIO/PredictionIO-Vagrant.git
$ cd PredictionIO-Vagrant/
$ git checkout master
```

Inside the directory `PredictionIO-Vagrant/`, you will find a file named `Vagrantfile` which is the configuration file used by Vagrant to setup the VM. You may modify this file if you want to change the VM configuration.

For example, if you want to change the memory of the VM, you can locate the following line in the `Vagrantfile` and change the value passed to the `memory` parameter (default is 2048MB):

```
  v.customize ["modifyvm", :id, "--cpuexecutioncap", "90", "--memory", "2048"]
```

In the directory `PredictionIO-Vagrant/`, bring up PredictionIO VM by running:

```
$ vagrant up
```

INFO: When you run `vagrant up` for the first time, it will download the base
box ubuntu/trusty64 if you don't have it. Then it will also install all
necessary libraries and setup PredictionIO in the virtual machine.

When it finishes successfully, you should see something like the following:

```
==> default: Installation done!
==> default: --------------------------------------------------------------------------------
==> default: Installation of PredictionIO <%= data.versions.pio %> complete!
==> default: IMPORTANT: You still have to start PredictionIO and dependencies manually:
==> default: Run: 'pio-start-all'
==> default: Check the status with: 'pio status'
==> default: Use: 'pio [train|deploy|...]' commands
==> default: Please report any problems to: dev@predictionio.apache.org
==> default: Documentation at: http://predictionio.apache.org
==> default: --------------------------------------------------------------------------------
==> default: Finish PredictionIO installation.
```

That's it! Now you have a PredictionIO VM running!

Please see the following notes regarding how to use PredictionIO VM with vagrant.

## Using the PredictionIO VM

### Login to the VM

You could ssh to the VM by running the following from your host machine in the
same directory where you run `vagrant up` (i.e. PredictionIO-Vagrant/)

```
$ vagrant ssh
```

Then your console prompt becomes something like the following, which means you have logged into the VM:

```
vagrant@vagrant-ubuntu-trusty-64:~$
```

One you've logged into the VM, you can proceed to [Choosing an Engine Template](/start/download) or continue the QuickStart of the Engine template you have chosen.

### Shutdown and bring up PredictionIO VM again

When you are not using PredictionIO VM, you should shut down VM properly, by running the following **in the host machine** (not inside VM):

```
$ vagrant halt
```

WARNING: If you didn't shut down VM properly or you ran `vagrant suspend`, the
VM may go to suspend state. HBase may not be running properly next time when
you run `vagrant up.` In this case, you can always run `vagrant halt` to do a
clean shutdown first before run `vagrant up` again.

Then you can run `vagrant up` again later to bring up the PredicitonIO VM again.

```
$ vagrant up
```

When it's ready, you should see the following:

```
==> default: --------------------------------------------------------------------------------
==> default: PredictionIO VM is up!
==> default: You could run 'pio status' inside VM ('vagrant ssh' to VM first) to confirm if PredictionIO is ready.
==> default: IMPORTANT: You still have to start the eventserver manually (inside VM):
==> default: Run: 'pio eventserver'
==> default: --------------------------------------------------------------------------------
```
